#ifndef InspItem_First
#define InspItem_First
#ifdef __GNUG__
#pragma interface
#endif

#include "TextItem.h"

class Ref;

//---- PeInspectorItem0 --------------------------------------------------------

class PeInspectorItem0: public TextItem {
public:
	MetaDef(PeInspectorItem0);

	PeInspectorItem0(const char *t, GrFace fc);
	~PeInspectorItem0();
	virtual void Deref(bool expanded);
	virtual void Update();
	virtual void Died();
	void Draw(Rectangle);

protected:
	char *name;
	bool died, modified;
};

//---- SuperItem0 --------------------------------------------------------------

class PeSuperItem0: public PeInspectorItem0 {
public:
	MetaDef(PeSuperItem0);
	PeSuperItem0(const char *name, GrFace fc= eFaceItalic);
	void Update();
	void Deref(bool expanded);
};

//---- PeClassItem0 ------------------------------------------------------------

class PeClassItem0: public PeSuperItem0 {
public:
	MetaDef(PeClassItem0);
	PeClassItem0(void *addr, const char *name, GrFace fc= eFaceBold);
	void Update();

protected:
	void *addr;
};

//---- PeInspectorItem ---------------------------------------------------------

class PeInspectorItem: public PeInspectorItem0 {
public:
	MetaDef(PeInspectorItem);

	PeInspectorItem(const char *n, Ref *r);
	~PeInspectorItem();
	void Deref(bool expanded);
	void Update();

protected:
	Ref *ref;
};

#endif

